﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;

//1.const分配内存，取地址时会分配临时内存；
//2.extern编译器，也会给const变量分配内存；
void testConstAllocateMem()
{
	const int m_A = 10;
	//3.会分配临时内存；
	int* p = (int*)&m_A;
}
//4.用普通变量初始化,const变量；只要是分配内存的，都可以修改值；
void testInitiateVar()
{
	int a = 10;
	//5.会分配内存；
	const int b = a;

	int* p = (int*)&b;
	*p = 1000;
	cout << "b =" << b << endl;//b =1000
}
//6.自定义数据类型；加const也会分配内存；
struct Person
{
	//7.姓名；
	string m_Name;
	int m_Age;
};
void testCustomDataType()
{
	const Person p1 = { "",NULL };
	//p1.m_Name = "aaa";

	Person* p = (Person*)&p1;
	p->m_Name = "德玛西亚";
	(*p).m_Age = 18;

	cout << "8.给自定义的const修饰Person类型赋值后，姓名：" << p1.m_Name << "  年龄：" << p1.m_Age << endl;
	//8.给自定义的const修饰Person类型赋值后，姓名：德玛西亚  年龄：18
}

//main240：const分配内存情况
int main240()
{
	testInitiateVar();
	testCustomDataType();

	system("pause");
	return EXIT_SUCCESS;
}